// 使用store管理数据 (vuex)
// 显示一个state数据
// this.$store.state.模块名.字段名
// this.$store.state.userstore.userInfo

export const state = () => {
    return {
        // 这里是全局状态数据保存的地方
        // 储存用户信息
        userInfo: {}
    }
}

// 规定对数据进行修改的方法
// 1、创建
export const mutations = {
    // mutations是一个对象
    // 里面的每一个属性都是一个函数
    // 这里的函数专门用来修改这个仓库的数据 state
    setuserInfo(state, data) {
        // 所有的mution函数都可以接受两个参数
        // 第一是state对象本身
        // 第二是外面调用时传入的数据
        // 修改
        state.userInfo = data

    }
}

// 2、使用
// 需要使用commit的方式调用mutation
// 调用时需要两个参数，第一个是mutation路径，包括文件名和函数名，中间是反斜杠隔开
// 第二个是需要传进去的data数据
// this.$store.commit('userstore/setuserInfo'data)

// 如果需要在vuex里面封装异步操作，就要经过action
// 调用异步操作以后我们才能用mutations 来改变数据
// action本身并不直接修改state
// 而是调用mutations来做修改
export const actions = {
    login(store, data) {
        // actions默认收到两个形参
        // 一个是当前整个仓库store本身
        this.$axios({
            url: "/accounts/login",
            method: "POST",
            data
        }).then((res) => {
            if (res.data.token) {
                console.log('vuex封装的函数');
                // 将登录过的用户数据存储进仓库;
                store.commit("setuserInfo", res.data);
            }
        });
    }
}